package com.center.enums;

import java.util.Objects;

/**
 * @Author dzl
 * @Date 2021/12/30 9:41 上午
 * 枚举的通用接口
 */
public interface EnumCenter< X, Y> {
    /**
     * 枚举的key
     *
     * @return key
     */
    X getKey();

    /**
     * 枚举的value
     *
     * @return value
     */
    Y getValue();

    /**
     * 是否等于当前枚举值的key
     *
     * @param key 传入的key
     * @return boolean
     */
    default Boolean keyCompare(X key) {
        if (key == null) {
            return false;
        }
        if (key instanceof String) {
            /*忽略大小写*/
            return ((String) key).equalsIgnoreCase((String) getKey());
        } else {
            return Objects.equals(this.getKey(), key);
        }
    }

    /**
     * 是否等于当前枚举值的value
     *
     * @param value 传入的value
     * @return boolean
     */
    default Boolean valueCompare(Y value) {
        if (value == null) {
            return false;
        }
        if (value instanceof String) {
            /*忽略大小写*/
            return ((String) value).equalsIgnoreCase((String) getValue());
        } else {
            return Objects.equals(this.getValue(), value);
        }
    }

}
